package com.toe.recommend.webapi.repository;

import com.toe.pojo.dto.recommend.RecommendClassesRedisDTO;

import java.util.List;

public interface IRecommendClassesRepository {

    /**
     * 免费课详情信息的key
     */
    String KEY_RECOMMEND_CLASSES_DETAILS = "recommend:classes:details:";

    /**
     * 免费课详情信息的key
     */
    String KEY_RECOMMEND_CLASSES_DETAILS_LIST = "recommend:classes:detailsList";

    /**
     * 判断是否存在id对应的免费课详情信息的缓存数据
     * @return 存在则返回true,否则返回false
     */
    boolean hasClassesDetailsData(Long id);

    boolean hasClassesDetailsDataList();

    /**
     * 向缓存中写入某id对应的空数据(null), 此方法主要用于解决缓存穿透问题
     * @param orderId 订单id
     */
//    void saveDetailsEmptyValue(Long orderId);

    /**
     * 将订单详情信息保存到缓存
     * @param classesVO
     */
    void save(RecommendClassesRedisDTO classesVO);

    void saveList(RecommendClassesRedisDTO redisDTO);

    /**
     * 将订单详情信息保存到缓存
     * @param listClassesDetails
     */
    void saveList(List<RecommendClassesRedisDTO> listClassesDetails);

    /**
     * 删除所有相关内存
     */
    void delete();

    void delete(Long id);

    /**
     * 删除所有相关内存
     */
    void deleteList();

    void deleteList(Long id);

    /**
     * 得到该id的订单详情信息
     * @param id
     * @return
     */
    RecommendClassesRedisDTO getClassesDetails(Long id);

    List<RecommendClassesRedisDTO> getClassesDetailsList();

    int getListCount();

}
